#ifndef TEXTURE_H
#define TEXTURE_H

#include "Asset.h"
#include "MyGL.h"
#include <memory>

namespace Engine
{
	class Texture : public Asset
	{
		private:
			GLuint m_textureID;
			int m_width;
			int m_height;
			int m_bpp;
			int m_format;

		public:
			Texture():m_textureID(0), m_width(0), m_height(0), m_bpp(0), m_format(0){}

			//inherited from Asset
			bool Load(const std::string& fileName);
			bool Load(rapidxml::xml_node <>* node);

			//getters
			int GetWidth() const {return m_width;}
			int GetHeight() const {return m_height;}
			int GetBPP() const {return m_bpp;}
			int GetFormat() const {return m_format;}

			void Bind();

			~Texture();
	};
	typedef std::shared_ptr <Texture> TextureSPtr;
}

#endif